from crewai import Agent, Crew, Task, Process
import models
from crewai.tools import tool

@tool
def book_hotel(hotel_name: str):
    """预订酒店"""
    print("假装成功预定了酒店")
    return f"成功预订了 {hotel_name} 的住宿。"
@tool
def book_flight(from_airport: str, to_airport: str):
    """预订航班"""
    print("假装成功预定了航班")
    return f"成功预订了从 {from_airport} 到 {to_airport} 的航班。"


# 定义 Agent 1：数据分析师
agent_one = Agent(
    llm=models.get_model(),
    role="酒店预定助理",
    goal="查询并预定酒店房间",
    backstory="你是一个酒店预订助手，负责处理用户的预订。",
    verbose=True,
    tools=[book_hotel]
)

# 定义 Agent 2：市场研究员
agent_two = Agent(
    llm=models.get_model(),
    role="机票预定助理",
    goal="收集有关市场动态的信息",
    backstory="你是一个专业的机票预订助手。",
    verbose=True,
    tools = [book_flight]
)

# 定义任务 1：收集市场数据并识别趋势
task_one = Task(
    description="帮用户预定{hotel_name}的房间，{nights}晚",
    expected_output="是否预定成功的状态",
    agent=agent_one
)

# 定义任务 2：研究影响市场动态的因素
task_two = Task(
    description="帮用户预定从{from_airport}到{to_airport}的航班,{date}出发",
    expected_output="是否预定成功的状态",
    agent=agent_two,
)

# 组建 Crew 并按顺序执行任务
crew = Crew(
    agents=[agent_one, agent_two],
    tasks=[task_one, task_two],

)


# 通过传递参数给任务执行
params = {
    "hotel_name": "McKittrick Hotel",
    "nights": 3,
    "from_airport": "BOS",
    "to_airport": "JFK",
    "date": "2025-10-10"
}

# 启动任务并传递参数
result = crew.kickoff(params)
print(result)